/*
 * IPostgresqlResult.h
 *
 *  Created on: 05.06.2012
 *      Author: Caffeine
 */
#ifdef _COMPILE_WITH_DB_POSTGRES_
#ifndef IPOSTGRESQLRESULT_H_
#define IPOSTGRESQLRESULT_H_

#include "../IResult.h"
#include <postgresql/libpq-fe.h>

namespace irr {
namespace db {
namespace postgresql {

/**
 * @class
 * Хранит в себе результаты запроса к PostgreSQL базе данных
 */
class IPostgresqlResult: public irr::db::IResult {
private:
	PGresult*resurses;
	irr::u32 pos_col;
	irr::u32 pos_row;
public:
	/**
	 * Конструктор
	 */
	IPostgresqlResult();

	/**
	 * Констурктор
	 *
	 * @param res PostgreSQL результат запроса
	 */
	IPostgresqlResult(PGresult*res);

	/**
	 * Устанавливает результат работы запроса
	 *
	 * @param res PostgreSQL результат запроса
	 */
	void setResult(PGresult*res);

	/**
	 * Диструктор. Уничтожает все содержащиеся в этом экземпляре данные
	 */
	virtual ~IPostgresqlResult();
	virtual irr::u32 getRowCount();
	virtual irr::u32 getColCount();
	virtual irr::core::stringc getColName(irr::u32 index);
	virtual irr::core::stringc getValue();
	virtual bool nextCol();
	virtual bool nextRow();
	virtual irr::u32 getColPosition();
	virtual irr::u32 getRowPosition();
};

} /* namespace postgresql */
} /* namespace db */
} /* namespace irr */
#endif /* IPOSTGRESQLRESULT_H_ */

#endif
